// The module 'vscode' contains the VS Code extensibility API
// Import the module and reference it with the alias vscode in your code below
import * as vscode from 'vscode';
import { GitService } from './git/GitService';
import { WebviewManager } from './view/WebviewManager';

// This method is called when your extension is activated
// Your extension is activated the very first time the command is executed
export function activate(context: vscode.ExtensionContext) {

	// Use the console to output diagnostic information (console.log) and errors (console.error)
	// This line of code will only be executed once when your extension is activated
	console.log('Congratulations, your extension "git-commander-pro" is now active!');

	let gitService: GitService | null = null;

	let disposable = vscode.commands.registerCommand('git-commander-pro.open', async () => {
		// Guard against no workspace folder being open.
		if (!vscode.workspace.workspaceFolders || vscode.workspace.workspaceFolders.length === 0) {
			vscode.window.showErrorMessage('Please open a project folder before using Git Commander Pro.');
			return;
		}

		if (!gitService) {
			const service = new GitService();
			const initialized = await service.initialize();
			if (initialized) {
				gitService = service;
			} else {
				// Initialization failed, error message is already shown by the service.
				return; 
			}
		}

		WebviewManager.createOrShow(context.extensionUri, gitService);
	});

	context.subscriptions.push(disposable);
}

// This method is called when your extension is deactivated
export function deactivate() {}
